﻿namespace CSharpLogger.Common
{
    /// <summary>
    /// Wrapper class for I/O Operations in <see cref="System.IO"/>
    /// </summary>
    public interface IFileWrapper
    {
        /// <summary>
        /// Wrapper method for method <see cref="TextWriter.WriteLine"/>
        /// </summary>
        /// <param name="path">Full path and file name</param>
        /// <param name="message">Message to be logged</param>
        /// <param name="level">Indicates current messageg log level</param>
        /// <exception cref="ArgumentNullException"></exception>
        /// <exception cref="ArgumentException"></exception>
        /// <exception cref="NotSupportedException"></exception>
        /// <exception cref="FileNotFoundException"></exception>
        /// <exception cref="IOException"></exception>
        /// <exception cref="SecurityException"></exception>
        /// <exception cref="DirectoryNotFoundException"></exception>
        /// <exception cref="UnauthorizedAccessException"></exception>
        /// <exception cref="PathTooLongException"></exception>
        /// <exception cref="ArgumentOutOfRangeException"></exception>
        /// <exception cref="FormatException"></exception>
        void WriteLog(string path, string message, LogLevel level);
    }
}
